#!/usr/bin/env node

const { spawnSync } = require('child_process');
const { generateByfuid, validateByfuidLength } = require('../src/index');

console.log('🔨 验证 BYFUID 库构建...\n');

// 测试基本功能
console.log('1. 测试基本功能...');
try {
  const byfuid = generateByfuid();
  const isValid = validateByfuidLength(byfuid);
  
  if (byfuid.length === 512 && isValid) {
    console.log('✅ 基本功能测试通过');
  } else {
    console.log('❌ 基本功能测试失败');
    process.exit(1);
  }
} catch (error) {
  console.log('❌ 基本功能测试出错:', error.message);
  process.exit(1);
}

// 测试带参数的生成
console.log('2. 测试带参数生成...');
try {
  const withUserData = generateByfuid('user12345678');
  const withCustomData = generateByfuid(null, '自定义数据');
  const withBoth = generateByfuid('test12345678', '测试数据');
  
  if (withUserData.length === 512 && withCustomData.length === 512 && withBoth.length === 512) {
    console.log('✅ 带参数生成测试通过');
  } else {
    console.log('❌ 带参数生成测试失败');
    process.exit(1);
  }
} catch (error) {
  console.log('❌ 带参数生成测试出错:', error.message);
  process.exit(1);
}

// 运行测试套件
console.log('3. 运行测试套件...');
const testResult = spawnSync('npm', ['test'], { stdio: 'inherit' });
if (testResult.status !== 0) {
  console.log('❌ 测试套件运行失败');
  process.exit(1);
}
console.log('✅ 测试套件通过');

// 运行代码检查
console.log('4. 运行代码检查...');
const lintResult = spawnSync('npm', ['run', 'lint'], { stdio: 'inherit' });
if (lintResult.status !== 0) {
  console.log('❌ 代码检查失败');
  process.exit(1);
}
console.log('✅ 代码检查通过');

// 安全检查
console.log('5. 运行安全检查...');
const auditResult = spawnSync('npm', ['audit'], { stdio: 'inherit' });
if (auditResult.status !== 0) {
  console.log('⚠️  安全检查发现警告（非阻塞错误）');
} else {
  console.log('✅ 安全检查通过');
}

console.log('\n🎉 所有构建验证通过！库已准备好发布。');